[Coding019] Sort - 插入排序

希尔排序

Ben 2024/01/03

 

More coding records

Get the knowledge flowing and circulating! :)

目录

标题:希尔排序

希尔排序(Shellsort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

  • 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率

  • 插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位

思想

希尔排序通过将比较的全部元素分为几个区域来提升插入排序的性能。

Sorting_shellsort_anim

Fig. 以23, 10, 4, 1的步长序列进行希尔排序

C语言代码实现

运行结果

image-20240103113414149

Java语言代码实现

运行结果

image-20240103113855197

 

重点代码段解读

Test Case: 91 32 13 24 55 46 67 88 79 10

image-20240103230551686

image-20240103230933389

image-20240103231331775

image-20240103231742752

image-20240103232400547

image-20240103232844241

关于希尔排序的稳定性

image-20240103232949979